package com.miniblog.article.server.controller;

import com.github.pagehelper.PageInfo;
import com.miniblog.article.api.entity.Classification;
import com.miniblog.article.server.service.ClassificationService;
import com.miniblog.common.utils.Msg;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 路径：com.miniblog.article.server.controller.ClassificationController.java
 * 类名：ClassificationController.java
 * 功能：文章分类、类型
 * 备注：
 * 创建人：typ
 * 创建时间：2019/12/1 19:22
 */
@Slf4j
@Controller
public class ClassificationController {

    @Autowired
    private ClassificationService classificationService;

    /**
     * 方法名：typeList
     * 功能：获取文章分类列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 14:43
     */
    @GetMapping("typeList")
    public Msg typeList(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                        @RequestParam(required = false, defaultValue = "10") Integer pageSize,
                        @RequestParam(required = false, defaultValue = "") String search) {

        try {
            PageInfo<Classification> articleList = classificationService.list(2, pageNum, pageSize, search);
            return Msg.success().add(articleList);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ClassificationController --> typeList 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }

    }

    /**
     * 方法名：classifyList
     * 功能：获取文章类型列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 14:43
     */
    @GetMapping("classifyList")
    public Msg classifyList(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                            @RequestParam(required = false, defaultValue = "10") Integer pageSize,
                            @RequestParam(required = false, defaultValue = "") String search) {
        try {
            PageInfo<Classification> articleList = classificationService.list(1, pageNum, pageSize, search);
            return Msg.success().add(articleList);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ClassificationController --> classifyList 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }

    }

    /**
     * 方法名：typeAndClassifyList
     * 功能：获取文章分类、类型列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     */
    @GetMapping("classificationList")
    public Msg classificationList() {
        try {
            Map<String, List<Classification>> classificationList = classificationService.classification();
            return Msg.success().add(classificationList);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ClassificationController --> classificationList 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

    /**
     * 方法名：classSave
     * 功能：添加、修改
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     */
    @PostMapping("classSave")
    public Msg classSave(@RequestBody Classification classification) {
        try {
            int rows = classificationService.save(classification);
            return Msg.success().add("编辑成功!");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ClassificationController --> classSave 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

    /**
     * 方法名：typeDel
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     */
    @RequestMapping("typeDel")
    public Msg typeDel(@RequestParam(required = true) String id) {
        try {
            Classification classification = new Classification();
            classification.setId(id);
            classification.setType(2);
            classificationService.del(classification);
            return Msg.success().add("删除成功！");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ClassificationController --> typeDel 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

    /**
     * 方法名：classifyDel
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     */
    @GetMapping("classifyDel")
    public Msg classifyDel(@RequestParam(required = true) String id) {
        try {
            Classification classification = new Classification();
            classification.setId(id);
            classification.setType(1);
            classificationService.del(classification);
            return Msg.success().add("删除成功！");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ClassificationController --> classifyDel 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

}